package com.softer.wxzj.mapper;

import com.softer.wxzj.common.entity.CommonResult;
import com.softer.wxzj.entity.BaseOrganization;
import com.softer.wxzj.entity.MessageVO;
import com.softer.wxzj.mapper.base.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 *    
 *  @ClassName: BaseOrganizationMapper
 *  @Description: 企业基本信息mapper
 *  @Author:  zcz
 *  @CreateDate: 2019-05-10   
 */
@Repository
public interface BaseOrganizationMapper extends BaseMapper<BaseOrganization> {
    /**
     * 查询id的状态是否为0
     *
     * @param id
     * @return
     */
    int getCountById(String id);

    List<BaseOrganization> getListSubmit(BaseOrganization baseOrganization);

    /**
     * 查询id的状态是否为0
     *
     * @param id
     * @return
     */
    int getCountByOrgCertificate(String id);

    /**
     * 根据id修改审批状态
     *
     * @param id
     * @return
     */
    int updateFlowStateById(@Param("id") String id, @Param("flowState") String flowState);

    /**
     * 根据id和审批状态查询详情
     *
     * @param id
     * @param flowState
     * @return
     */
    BaseOrganization getInfoByIdAndFlowState(@Param("id") String id, @Param("flowState") String flowState);

    /**
     * 根据id修改业务状态
     *
     * @param id
     * @return
     */
    int updateStateById(@Param("id") String id, @Param("state") String state);

    /**
     * 根据id和添加人查询记录条数
     *
     * @param id
     * @return
     */
    int getCountByIdAndCreater(@Param("id") String id, @Param("creater") String creater);

    /**
     * 开发企业
     *
     * @return
     */

    List<BaseOrganization> selectOpenCommittee(@Param(value = "id") String id);

    /**
     * 物业企业
     *
     * @return
     */
    List<BaseOrganization> selectProperty(@Param(value = "id") String id);

    List<BaseOrganization> selectAll(@Param(value = "id") String id);

    /**
     * 施工企业
     *
     * @return
     */
    List<BaseOrganization> selectSGOrgIdName();

    /**
     * 审计企业
     *
     * @return
     */
    List<BaseOrganization> selectSJOrgIdName();

    /**
     * 监理企业
     *
     * @return
     */
    List<BaseOrganization> selectJLOrgIdName();

    /**
     * 查询小区下的申请单位信息
     *
     * @param id 小区id
     * @return
     */
    List<BaseOrganization> selectOrgByRegionId(@Param("id") String id);

    List<BaseOrganization> selectOrgByRegionId2(@Param("id") String id);

    BaseOrganization selectOCInfo(@Param("id") String id);

    /**
     * 查询所在企业编号最大值
     */
    String selectMaxRegeditCode(String orgTypeCode);

    String selectNameFromId(String id);

    List<String> selectAllName(String id);

    List<BaseOrganization> findByName(@Param("name") String name);

    /**
     * 查询开发企业，物业企业，施工企业，监理企业，审计企业下拉列表
     *
     * @param id   小区ID
     * @param type 类型 （01开发企业，02物业企业，03施工企业，04监理企业，08审计企业）
     * @return 企业下拉列表
     */
    List<BaseOrganization> getOrgList(@Param("id") String id, @Param("type") String type);

    /**
     * 根据ids查询企业名拼接成一个字符串
     *
     * @param ids
     * @return
     */
    String getConcatOrgNameByIds(String ids);

    /**
     * 开发企业名称
     *
     * @param name
     * @return
     */
    int selectName(String name);

    BaseOrganization getIdByNo(String no);

    BaseOrganization getIdByName(String name);

    /**
     * 查询
     *
     * @param orgCertificate
     * @return
     */

    BaseOrganization selectByOrgCertificate(String orgCertificate);

    List<BaseOrganization> getModifyListToExtraNet(BaseOrganization organization);

    /**
     * 修改审核次数
     *
     * @param id
     * @param flowNum
     * @return
     */
    int updateFlowNum(@Param("id") String id, @Param("flowNum") int flowNum);

    /**
     * 查询监理企业信息
     * (用于外网调用，只查询监理人和监理电话)
     *
     * @param id 监理企业ID
     * @return 监理企业信息
     */
    BaseOrganization getOrgSupervisionInfo(String id);

    /**
     * 查询项目申请列表
     *
     * @param regionIdList 管理的小区ID（以逗号分隔）
     * @param companyId    申请企业ID
     * @return 项目申请列表
     */
    List<MessageVO> getExpList(@Param("regionIdList") String regionIdList, @Param("companyId") String companyId);

    /**
     * 查询拨款申请列表
     *
     * @param regionIdList 管理的小区ID（以逗号分隔）
     * @param companyId    申请企业ID
     * @return 拨款申请列表
     */
    List<MessageVO> getExpPayList(@Param("regionIdList") String regionIdList, @Param("companyId") String companyId);

    /**
     * 查询拨款申请撤销列表
     *
     * @param regionIdList 管理的小区ID（以逗号分隔）
     * @param companyId    申请企业ID
     * @return 拨款申请撤销列表
     */
    List<MessageVO> getExpPayRevocationList(@Param("regionIdList") String regionIdList, @Param("companyId") String companyId);

    /**
     * 查询区域绑定列表
     *
     * @param operNo 登录账号
     * @return 区域绑定列表
     */
    List<MessageVO> getOrgRegionList(String operNo);

    /**
     * 查询单位信息变更申请列表
     *
     * @param companyId 企业ID
     * @return 单位信息变更申请列表
     */
    List<MessageVO> getOrgModifyList(String companyId);

    /**
     * 查询收款账户变更列表
     *
     * @param companyId 企业ID
     * @return 收款账户变更列表
     */
    List<MessageVO> getOrgBankModifyList(String companyId);

    /**
     * 查询收款账户资金到账列表
     *
     * @param regionIdList 管理的小区ID（以逗号分隔）
     * @param companyId    申请企业ID
     * @return 收款账户资金到账列表
     */
    List<MessageVO> getAccKeepList(@Param("regionIdList") String regionIdList, @Param("companyId") String companyId);

    /**
     * 查询企业ID
     *
     * @param developName 企业名称
     * @return 企业ID
     */
    String getInfoByName(String orgName);
}
